
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../js/cookie.js"></script>
    <script src="../js/ajax.js"></script>
</head>
<body>
    

    <script>
        // Promise 实例方法  new
        // p.then
        // p.catch
        // p.finally
        
        // Promise 方法 
        // Promise.all()
        // Promise.race()  // 赛道 

        // Promise.all()
        // Promise.all()方法用于将多个 Promise 实例，包装成一个新的 Promise 实例
        // p =   Promise.all([p1,p2,p3]);

        // 1. 只有 p1 p2 p3 的状态都变成 fulfilled  p 的状态才会变为 fulfilled 此时 p1 p2 p3 返回的数据变成一个数组 传递给 p 
        // 2. 只要  p1 p2 p3 的状态 有一个 变成 rejected  p 的状态就变成 rejected  错误的数据传递给 p的 reject 

        // P1
        // P2    ===> 总的时间 按最慢的来 
        // P3

        function readText(url,timeout){
            var p = new Promise(function(resolve,reject){
                // helllo;
                setTimeout(() => {
                    $.ajax({
                        type:'get',
                        dataType:"text",
                        url,
                        success:res=>{
                            resolve(res)
                        }
                    })
                }, timeout);
            })
            return p;
        }

        console.time("wh2107");
        var p1 = readText("../data/1.txt",1000);
        var p2 = readText("../data/2.txt",5000);
        var p3 = readText("../data/3.txt",3000);

        var pro = Promise.all([p1,p2,p3]);
        console.log(pro,p1,p2,p3)

        pro.then(result=>{
            console.log("fulfilled",result);
            console.timeEnd("wh2107");
        }).catch(err=>{
            console.log("rejected --" + err)
        })
    </script>
</body>
</html>